home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / hh_str13.zip / HHSTRING.H < prev    next >
C/C++ Source or Header  |  1993-03-13  |  16KB  |  327 lines

  1. /*    H   H H      H  SSS  TTTTT RRRR  IIIII N    N  GGG            */
  2. /*    H   H H      H S    S   T    R   R    I   N    N G   G            */
  3. /*    H   H H      H S        T    R   R    I   NN    N G            */
  4. /*    HHHHH HHHHH  SSS    T    RRRR    I   N N N G  GG            */
  5. /*    H   H H      H    S   T    R R    I   N  NN G   G            */
  6. /*    H   H H      H S    S   T    R  R    I   N    N G   G            */
  7. /*    H   H H      H  SSS    T    R   R IIIII N    N  GGG            */
  8. /*                                    */
  9. /************************************************************************/
  10. /*                                    */
  11. /*    define function equates                     */
  12. /*                                    */
  13. #include <ctype.h>            /* for the "is..." macros    */
  14. #include <dos.h>            /* for DATE structure        */
  15. #include <string.h>            /* for ANSI string functions    */
  16.  
  17. #define strequal(a, b)        !strcmp((a), (b))/* strequal = reverse    */
  18.                         /*   of strcmp        */
  19. #define strnotequal(a, b)    strcmp((a), (b))/* strnotequal = strcmp */
  20.  
  21. #define streos(s)     strset((s), '\0')/* streos = fill with EOSs    */
  22. #define strblank(s)    strset((s), ' ')/* strblank = fill with blanks    */
  23. #define strzero(s)    strset((s), '0')/* strzero = fill with ASCII 0s*/
  24. #define strend(s)    ((s) + strlen(s))/* strend = pointer to end of s*/
  25. #define strdelwhite(s)    strchrdelgr((s), " \t\n\f\r\v")/* delete    */
  26.                             /*   whitespace    */
  27. #define ptrfirstsub(a, b)    strstr((a), (b))
  28. /*    -    -    -    -    -    -    -    -    */
  29. /*                                    */
  30. /*    define all ptrnext<...> functions as being the corresponding    */
  31. /*    ptrfirst<...> function, but with the pointer increased by one    */
  32. /*    (NOTE: ptrnextword and ptrnexttext  are exceptions to this)    */
  33. /*                                    */
  34. #define ptrnextblank(a)            ptrfirstblank(a+1)
  35. #define ptrnextchr(a, b)        ptrfirstchr(a+1, b)
  36. #define ptrnextchri(a, b)        ptrfirstchri(a+1, b)
  37. #define ptrnextdig(a)            ptrfirstdig(a+1)
  38. #define ptrnexthex(a)            ptrfirsthex(a+1)
  39. #define ptrnextnotblank(a)        ptrfirstnotblank(a+1)
  40. #define ptrnextnotchr(a, b)        ptrfirstnotchr(a+1, b)
  41. #define ptrnextnotchri(a, b)        ptrfirstnotchri(a+1, b)
  42. #define ptrnextnotdig(a)        ptrfirstnotdig(a+1)
  43. #define ptrnextnothex(a)        ptrfirstnothex(a+1)
  44. #define ptrnextnotrange(a, b, c)    ptrfirstnotrange(a+1, b, c)
  45. #define ptrnextnotgr(a, b)        ptrfirstnotgr(a+1, b)
  46. #define ptrnextnottextterm(a)        ptrfirstnottextterm(a+1)
  47. #define ptrnextnotwhite(a)        ptrfirstnotwhite(a+1)
  48. #define ptrnextnotwordterm(a)        ptrfirstnotwordterm(a)
  49. #define ptrnextrange(a, b, c)        ptrfirstrange(a+1, b, c)
  50. #define ptrnextgr(a, b)            ptrfirstgr(a+1, b)
  51. #define ptrnextsub(a, b)        strstr(a+1, b)
  52. #define ptrnextsubi(a, b)        ptrfirstsubi(a+1, b)
  53. #define ptrnextwhite(a)            ptrfirstwhite(a+1)
  54. #define ptrnextwordterm(a)        ptrfirstwordterm(a+1)
  55. #define ptrnexttextterm(a)        ptrfirsttextterm(a+1)
  56. /*    -    -    -    -    -    -    -    -    */
  57. /*                                                                      */
  58. /*    define string constants                        */
  59. /*                                    */
  60. #define    EOS        '\0'        /* C-language End-Of-String    */
  61. #define EOL        '\n'        /* C-language End-Of_Line    */
  62. /*    -    -    -    -    -    -    -    -    */
  63. /*                                    */
  64. /*    define macros                            */
  65. /*                                    */
  66. #define ISBLANK(s)    (*(s) == ' ')
  67. #define ISEOL(s)    (*(s) == '\n')
  68. #define ISEOS(s)    (*(s) == '\0')
  69. #define ISTAB(s)    (*(s) == '\t')
  70. #define ISWHITE(s)    ((*(s) == ' ') || (*(s) == '\t'))
  71. #define ISWORDTERM(s)    (isspace(*(s)) || (*(s) == '\0'))
  72. /*                                    */
  73. /* note that the following macro provides only PART of what is referred    */
  74. /* to in the documentation as a "text terminator" which consists of any    */
  75. /* of the characters in ISTEXTTERM but also includes any character in    */
  76. /* ISWORDTERM                                */
  77. /*                                    */
  78. #define ISTEXTTERM(s)    ((*(s) == '.') || (*(s) == '!') || (*(s) == '?') || (*(s) == ',') || (*(s) == ':') || (*(s) == ';'))
  79. /*    -    -    -    -    -    -    -    -    */
  80. /*                                                                      */
  81. /*    function prototypes for hhstring (alphabetical order)        */
  82. /*                                    */
  83.  unsigned int  atoh(char *hexstring);
  84.  unsigned int  atoh2(int *nchars, char *hexstring);
  85. unsigned long  atolh(char *hexstring);
  86. unsigned long  atolh2(int *nchars, char *hexstring);
  87.  unsigned int  atoo(char *octalstring);
  88.  unsigned int  atoo2(int *nchars, char *octalstring);
  89.      char  btoc(int digit);
  90.       int  ctob(char c);
  91.       int  ctod(char c);
  92.       int  ctoh(char c);
  93.      char *date_without(char *date_string, char *separator);
  94.      char *date_withpad(char *date_string, char *separator, char padchar);
  95.      char  dtoc(int digit);
  96.      char *fnconv_1to2(char *fname);
  97.      char *fnconv_2to1(char *fname);
  98.      char  htoc(int digit);
  99.       int  isfilename(char *filename);
  100.      char *make_date_without(char *date_string, char *separator, struct dosdate_t *DATE);
  101.      char *make_date_withpad(char *date_string, char *separator, struct dosdate_t *DATE, char padchar);
  102.      char *ptrfirstblank(char *ptr);
  103.      char *ptrfirstchr(char *ptr, char find);
  104.      char *ptrfirstchri(char *ptr, char find);
  105.      char *ptrfirstdig(char *ptr);
  106.      char *ptrfirstgr(char *instring, char *chars);
  107.      char *ptrfirsthex(char *ptr);
  108.      char *ptrfirstnotblank(char *ptr);
  109.      char *ptrfirstnotchr(char *ptr, char find);
  110.      char *ptrfirstnotchri(char *ptr, char find);
  111.      char *ptrfirstnotdig(char *ptr);
  112.      char *ptrfirstnotgr(char *instring, char *chars);
  113.      char *ptrfirstnothex(char *ptr);
  114.      char *ptrfirstnotrange(char *instring, char c1, char c2);
  115.      char *ptrfirstnottextterm(char *ptr);
  116.      char *ptrfirstnotwhite(char *ptr);
  117.      char *ptrfirstnotwordterm(char *ptr);
  118.      char *ptrfirstrange(char *instring, char c1, char c2);
  119.      char *ptrfirstsubi(char *instring, char *substring);
  120.      char *ptrfirsttext(char *ptr);
  121.      char *ptrfirsttextterm(char *ptr);
  122.      char *ptrfirstwhite(char *ptr);
  123.      char *ptrfirstword(char *ptr);
  124.      char *ptrfirstwordterm(char *string);
  125.      char *ptrlastblank(char *string);
  126.      char *ptrlastchr(char *ptr, char findchar);
  127.      char *ptrlastchri(char *ptr, char findchar);
  128.      char *ptrlastdig(char *string);
  129.      char *ptrlastgr(char *string, char *chars);
  130.      char *ptrlasthex(char *string);
  131.      char *ptrlastnotblank(char *string);
  132.      char *ptrlastnotchr(char *string, char find);
  133.      char *ptrlastnotchri(char *string, char find);
  134.      char *ptrlastnotdig(char *string);
  135.      char *ptrlastnotgr(char *string, char *chars);
  136.      char *ptrlastnothex(char *string);
  137.      char *ptrlastnotrange(char *string, char c1, char c2);
  138.      char *ptrlastnottextterm(char *str);
  139.      char *ptrlastnotwhite(char *string);
  140.      char *ptrlastnotwordterm(char *string);
  141.      char *ptrlastrange(char *string, char c1, char c2);
  142.      char *ptrlastsub(char *string, char *substring);
  143.      char *ptrlastsubi(char *string, char *substring);
  144.      char *ptrlasttext(char *str);
  145.      char *ptrlasttextterm(char *str);
  146.      char *ptrlastwhite(char *string);
  147.      char *ptrlastword(char *string);
  148.      char *ptrlastwordterm(char *str);
  149.      char *ptrnexttext(char *ptr);
  150.      char *ptrnextword(char *ptr);
  151.      char *ptrprevblank(char *ptr);
  152.      char *ptrprevchr(char *ptr, char inchar);
  153.      char *ptrprevchri(char *ptr, char inchar);
  154.      char *ptrprevdig(char *string);
  155.      char *ptrprevgr(char *ptr, char *chars);
  156.      char *ptrprevhex(char *string);
  157.      char *ptrprevnotblank(char *ptr);
  158.      char *ptrprevnotchr(char *ptr, char find);
  159.      char *ptrprevnotchri(char *ptr, char find);
  160.      char *ptrprevnotdig(char *ptr);
  161.      char *ptrprevnotgr(char *ptr, char *chars);
  162.      char *ptrprevnotrange(char *ptr, char c1, char c2);
  163.      char *ptrprevnottextterm(char *ptr);
  164.      char *ptrprevnotwhite(char *ptr);
  165.      char *ptrprevnotwordterm(char *ptr);
  166.      char *ptrprevrange(char *ptr, char c1, char c2);
  167.      char *ptrprevsub(char *ptr, char *substring);
  168.      char *ptrprevsubi(char *ptr, char *substring);
  169.      char *ptrprevtext(char *ptr);
  170.      char *ptrprevtextterm(char *ptr);
  171.      char *ptrprevwhite(char *ptr);
  172.      char *ptrprevword(char *ptr);
  173.      char *ptrprevwordterm(char *ptr);
  174.      char *ptrthistext(char *ptr);
  175.      char *ptrthisword(char *ptr);
  176.      char *strblanktotab(char *inpline, int tabspace);
  177.      char *strcenter(char *instring);
  178.      char *strcentern(char *instring, int width);
  179.      char *strcenternew(char *newstring, char *instring);
  180.      char *strcenternnew(char *newstring, char *instring, int width);
  181. unsigned long  strchecksuma(char *instring);
  182. unsigned long  strchecksumia(char *instring);
  183. unsigned char  strchecksumil(char *instring);
  184. unsigned char  strchecksuml(char *instring);
  185.       int  strchrcount(char *instring, int c);
  186.       int  strchrcounti(char *instring, char c);
  187.      char *strchrdel(char *instring, char delchar);
  188.      char *strchrdelgr(char *instring, char *delchars);
  189.      char *strchrdelgrnew(char *newstring, char *instring, char *delchars);
  190.      char *strchrdeli(char *instring, char delchar);
  191.      char *strchrdelinew(char *newstring, char *instring, char delchar);
  192.      char *strchrdelnew(char *newstring, char *instring, char delchar);
  193.      char *strchrdelrange(char *instring, char lo, char hi);
  194.      char *strchrdelrangenew(char *newstring, char *instring, char lo, char hi);
  195.      char  strchrfromc(int *nchars, char *instring);
  196.      char *strchrrpl(char *instring, char fromchar, char tochar);
  197.      char *strchrrpli(char *instring, int fromchar, int tochar);
  198.      char *strchrrplinew(char *newstring, char *instring, char fromchar, char tochar);
  199.      char *strchrrplnew(char *newstring, char *instring, char fromchar, char tochar);
  200.       int  strchrtoc(char* tostring, char inchar);
  201.      char *strcode1 (char *instring, char *codestring);
  202.      char *strcode2(char *instring);
  203.      char *strcomma(char *instring);
  204.      char *strcommaf(char *instring);
  205.      char *strcommafnew(char *newstring, char *instring);
  206.      char *strcommafri(char *result, int num);
  207.      char *strcommafrl(char *result, long num);
  208.      char *strcommafrui(char *result, unsigned int num);
  209.      char *strcommafrul(char *result, unsigned long num);
  210.      char *strcomman(char *instring, int nchar);
  211.      char *strcommanew(char *newstring, char *instring);
  212.      char *strcommannew(char *newstring, char *instring, int nchar);
  213.       int  strcommatoi(char *inpstring);
  214.      long int  strcommatol(char *inpstring);
  215.  unsigned int  strcommatoui(char *string);
  216. unsigned long  strcommatoul(char *string);
  217.      char *strdate1(char *date_string);
  218.      char *strdate2(char *date_string);
  219.      char *strdate3(char *date_string);
  220.      char *strdate4(char *date_string);
  221.      char *strdate5(char *date_string);
  222.      char *strdate6(char *date_string);
  223.      char *strdate7(char *date_string);
  224.      char *strdateconv(char *date_string, int intype, int outtype);
  225.       int  strfromc(char *instring);
  226.       int  strindex(char *ptr, char *str);
  227.      char *strinsert(char *instring, int putplace, char *putstring);
  228.      char *strinsertnew(char *newstring, char *instring, int putplace, char *putstring);
  229.       int  strisempty(char *instring);
  230.       int  striswhite(char *instring);
  231.      char *strleft(char *instring, int nchar);
  232.      char *strleftnew(char *newstring, char *instring, int n);
  233.       int  strlenmax(char *string, int number);
  234.       int  strlenmin(char *string, int number);
  235.      char *strlfdel (char *instring, int nchar);
  236.      char *strlfdelnew(char *newstring, char *instring, int nchar);
  237.      char *strlfjust(char *instring);
  238.      char *strlfjustnew(char *newstring, char *instring);
  239.      char *strlfpad(char *instring, int nchars, char PadChar);
  240.      char *strlfpadnew(char *newstring, char *instring, int nchars, char PadChar);
  241.      char *strlfrot(char *instring, int nchar);
  242.      char *strlfrotnew(char *newstring, char *instring, int nchar);
  243.      char *strlfset(char *instring, int nchar, char setchar);
  244.      char *strlfsetnew(char *newstring, char *instring, int nchar, char setchar);
  245.      char *strlfsh (char *instring, int nchar);
  246.      char *strlfshnew(char *newstring, char *instring, int nchar);
  247.      char *strlfsize(char *instring, int size);
  248.      char *strlfsizenew(char *newstring, char *instring, int size);
  249.      char *strlftrim(char *instring);
  250.      char *strlftrimnew(char *newstring, char *instring);
  251.      char *strmid(char *instring, int start);
  252.      char *strmiddel(char *instring, int start, int nchar);
  253.      char *strmiddelnew(char *newstring, char *instring, int start, int nchar);
  254.      char *strmidn(char *instring, int start, int nchars);
  255.      char *strmidnew(char *newstring, char *instring, int start);
  256.      char *strmidnnew(char *newstring, char *instring, int start, int nchars);
  257.      char *strmidpad(char *instring, int where, int nchar, char padchar);
  258.      char *strmidpadnew(char *newstring, char *instring, int where, int nchar, char padchar);
  259.      char *strmidset(char *instring, int start, int nchar, char setchar);
  260.      char *strmidsetnew(char *newstring, char *instring, int start, int nchar, char setchar);
  261.      char *strrepeat(char *newstring, char *instring, int n);
  262.      char *strrepeatn(char *newstring, char *instring, int ntimes, int nchars);
  263.      char *strreverse(char *instring);
  264.      char *strreversenew(char *newstring, char *instring);
  265.      char *strright(char *instring, int nchar);
  266.      char *strrightnew(char *newstring, char *instring, int n);
  267.      char *strrtdel(char *instring, int nchar);
  268.      char *strrtdelnew(char *newstring, char *instring, int nchar);
  269.      char *strrtjust(char *instring);
  270.      char *strrtjustnew(char *newstring, char *instring);
  271.      char *strrtpad(char *instring, int nchar, char PadChar);
  272.      char *strrtpadnew(char *newstring, char *instring, int nchar, char PadChar);
  273.      char *strrtrot(char *instring, int nchar);
  274.      char *strrtrotnew(char *newstring, char *instring, int nchar);
  275.      char *strrtset(char *instring, int nchar, char setchar);
  276.      char *strrtsetnew(char *newstring, char *instring, int nchar, char setchar);
  277.      char *strrtsh (char *instring, int nchar);
  278.      char *strrtshnew(char *newstring, char *instring, int nchar);
  279.      char *strrtsize(char *instring, int size);
  280.      char *strrtsizenew(char *newstring, char *instring, int size);
  281.      char *strrttrim(char *instring);
  282.      char *strrttrimnew(char *newstring, char *instring);
  283.      char *strsetnew(char *newstring, char *instring, char setchar);
  284.      char *strstri(char *instring,    char *substring);
  285.       int  strsubcount(char *string, char *substring);
  286.       int  strsubcounti(char *string, char *substring);
  287.      char *strsubdel(char *instring,  char *substring);
  288.      char *strsubdelall(char *instring, char *substring);
  289.      char *strsubdelallnew(char *newstring, char *instring, char *substring);
  290.      char *strsubdeli(char *instring, char *substring);
  291.      char *strsubdeliall(char *instring, char *substring);
  292.      char *strsubdeliallnew(char *newstring, char *instring, char *substring);
  293.      char *strsubdelinew(char *newstring, char *instring, char *substring);
  294.      char *strsubdelnew(char *newstring, char *instring, char *substring);
  295.      char *strsubrpl(char *instring, char *fromstr, char *tostr);
  296.       int  strsubrplall(char *instring, char *fromstr, char *tostr);
  297.       int  strsubrplallnew(char *newstring, char *instring, char *fromstr, char *tostr);
  298.      char *strsubrpli(char *instring, char *oldsub, char *newsub);
  299.       int  strsubrpliall(char *instring, char *fromstr, char *tostr);
  300.       int  strsubrpliallnew(char *newstring, char *instring, char *fromstr, char *tostr);
  301.      char *strsubrplinew(char *newstring, char *instring, char *fromstr, char *tostr);
  302.      char *strsubrplnew(char *newstring, char *instring, char *fromstr, char *tostr);
  303.      char *strtabtoblank(char *inpline, int tabspace);
  304.      char *strtextfirst(char *firsttext, char *string);
  305.      char *strtextget(char *text, char *ptr);
  306.      char *strtextlast(char *lasttext, char *instring);
  307.      char *strtextnext(char *nexttext, char *ptr);
  308.      char *strtextprev(char *prevtext, char *ptr);
  309.      char *strtextthis(char *thistext, char *ptr);
  310.      char *strtoc(char *tostring, char *instring);
  311.      char *strtolower(char *instring);
  312.      char *strtolowernew(char *newstring, char *instring);
  313.      char *strtoupper(char *instring);
  314.      char *strtouppernew(char *newstring, char *instring);
  315.      char *strtrim(char *instring);
  316.      char *strtrimnew(char *newstring, char *instring);
  317.      char *strwordfirst(char *firstword, char *instring);
  318.      char *strwordget(char *word, char *ptr);
  319.      char *strwordlast(char *lastword, char *instring);
  320.      char *strwordnext(char *nextword, char *ptr);
  321.      char *strwordprev(char *prevword, char *ptr);
  322.      char *strwordthis(char *thisword, char *inptr);
  323.      char *strxcat(char *instring, ... );
  324.      char *strxcatn(char *instring, int nchars, ... );
  325.  
  326.  
  327.